package com.ty.springbootjapthymeleaf.repository;


import com.ty.springbootjapthymeleaf.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

/**
 * UserRepository
 *
 * @aurhor Administrator  whs
 * @since 2024/8/28
 */
public interface UsrRepository extends JpaRepository<User,Long> , JpaSpecificationExecutor<User> {



//    /**
//     * 根据用户名查询
//     * @param usrName
//     * @return
//     */
//    public List<User> findByUsrNameLike(String usrName);
//
//    /**
//     * 自定义HQL查询
//     * HQL 是面向实体类和属性 ，语句中不能写表名和字段名
//     */
//    @Query("select u from User u where u.usrRoleId = ?1 ") // ?后面的1 代表的是方法参数里面的顺序可以1、2、3的排序
//    public List<User> findByRoleId(Long roleId);
//
//    /**
//     * 使用原生SQL查询
//     * 需要在添加一个参数 nativeQuery = true
//     * 这时写的是SQL，面向数据库表和字段名
//     */
//    @Query(value = "select * from sys_user where usr_role_id = ?1" , nativeQuery = true)
//    public List<User> findByRoleIdSQL(Long roleId);
//
//
//    @Transactional(timeout = 10) // 设置超时时间
//    @Modifying  // 删除和修改都要加
//    @Query("update User u set u.usrName = ?1 where u.usrId = ?2")
//    public int modifyNameById(String name,Long id);
//
//    /**
//     *  此方法对应User实体中的 QL命名查询
//     *  如果希望根据接口方法名来实现数据库操作，则应该命名为findUsersByUsrName
//     */
//    public List<User> findUsersByName(String usrName);
//
//    /**
//     * 测试按角色查询用户并分页
//     * @param usrRoleId  角色编号
//     * @param pageable  控制分页的辅助类
//     */
//    public Page<User> findPageByUsrRoleId(Long usrRoleId, Pageable pageable);
//
//    /**
//     *  动态查询的复杂分页查询
//     * @param
//     * @param pageable
//     */
//    @Query("SELECT u FROM User u WHERE u.usrName  = ?1  AND u.usrRoleId = ?2")
//    public Page<User> findPageByUsrNameAndUsrRoleId(@Param("usrName")String usrName,@Param("roleId") Long roleId, Pageable pageable);
//
//    public Page<User> findAll(Specification<User> specification, Pageable pageable);
//
//
//    /**
//     * 根据id删除
//     * @param usrId
//     * @return
//     */
//    @Modifying
//    @Transactional
//    @Query("DELETE FROM User u WHERE u.usrId = :usrId")
//    public int deleteUserById(@Param("usrId") Long usrId);
//
//
//    // 多表连接查询
//    @Query("select u.usrId as useId , u.usrName as usrName , u.usrPassword as usrPassword , u.usrRoleId as usrRoleId ,u.usrFlag as usrFlag , r.roleName as roleName from User u , Role r where u.usrRoleId = r.roleId and u.usrId = ?1")
//    public UserInfo getUserInfo(Long usrId);





    //    /**
//     * Map 复杂分页查询
//     * @param param
//     * @param pageable
//     */
//    @Query("SELECT u FROM User u WHERE u.usrName = :usrName AND u.usrRoleId = :usrRoleId")
//    public Page<User> findPageByMap(Map<String,Object> param, Pageable pageable);

}
